// 未来之窗渲染引擎 - 直接整合到$cq库
// @Name： 未来之窗渲染引擎
// @Author：cybersnow
// @Site： www.ynwlzc.cn
// @LastEdit: 未来之窗
// 2022-10-17

// 渲染引擎配置（全局可修改）
$cq.renderConfig = {
    open: "{cwpdapp{",
    close: "}}"
};

// 渲染引擎工具函数
var renderUtils = {
    exp: function(a) {
        return new RegExp(a, "g")
    },
    query: function(a, c, e) {
        var f = ["#([\\s\\S])+?", "([^{#}])*?"][a || 0];
        return this.exp((c || "") + $cq.renderConfig.open + f + $cq.renderConfig.close + (e || ""))
    },
    escape: function(a) {
        return String(a || "").replace(/&(?!#?[a-zA-Z0-9]+;)/g, "&amp;")
            .replace(/</g, "&lt;")
            .replace(/>/g, "&gt;")
            .replace(/'/g, "&#39;")
            .replace(/"/g, "&quot;")
    },
    error: function(a, b) {
        var c = "未来之窗渲染引擎 Error：";
        if (typeof console !== "undefined" && console.error) {
            console.error(c + a + "\n" + (b || ""));
        }
        return c + a;
    }
};

// 渲染器构造函数
function RenderEngine(tpl) {
    this.tpl = tpl;
    this.cache = null;
}

// 渲染器原型方法
RenderEngine.prototype.parse = function(data) {
    var tpl = this.tpl;
    var openTag = renderUtils.exp("^" + $cq.renderConfig.open + "#", "");
    var closeTag = renderUtils.exp($cq
